Computer applications are often graphics based, and may; using what is commonly termed virtual reality, give an illusion of 3D space by situating virtual objects on a virtual 3D grid. Using immersion equipment, users can interact directly with this virtual environment. Additionally or alternatively, the 3D space can be projected on to a substantially flat or 2D surface such as a computer visual display unit (VDU), thus virtual reality may be viewed on substantially 2D computer screens, nevertheless, an illusion of solidity is maintained, and virtual objects will have in addition to height and width, an apparent depth. These objects move with respect to backgrounds or scenes, which may be viewable from different angles, and if the viewing angle is changed, the whole scene is rotated in consequence.
Computer graphics applications tend to be data heavy applications, comprising very large amounts of data. Data intensiveness is particularly true for applications involving virtual reality with moving images. 3D environments, where changes of viewing position typically require redrawing of both the background and foreground objects displayed thereon are particularly data intensive. In general, the more accurately virtual elements reflect reality, the more data is required to define them and the more effort is required to manipulate the data and display them.
As illustrated in FIG. 1, which shows schematically the inter-relationship between clients and server in networked computing environments, networked computing comprises a plurality of remote terminals or clients interacting with the same computer application, the bulk of which usually runs on a host computer known as the server. The clients and the server are interconnected via a network. The individual clients are often at a considerable distance from each other and from the host server on which the application is based.
Where an application permits a plurality of users to view the same graphic interface, and where each terminal interface is updated regarding interactions in real time, the currently viewed scene may require changes that are generally implemented by regeneration of the scene. This may require all the data required for the scene display to be transferred via the network to each terminal.
Now the speed at which a computer application runs is a function of its complexity and the capability of the hardware. In networked computing however, particularly with data-intensive, heavy applications, the speed at which applications run, is often limited by the time required for necessary data to be transferred between users on remote terminals, and/or between those remote terminals and the host computer. This data transfer time is a function of the bandwidth of the data transfer lines, and of the volume of data that requires transporting. Clearly there is a desire to limit the quantity of data that is transported between client and host, and efficient programming and data compression techniques are used to facilitate this data limiting. The Internet is a multi-client computing environment that potentially allows many users to interact with each other using the same application, enabling many players to play the same adventure game for example. To facilitate multiplayer interaction in a 3D virtual graphic environment in real-time, it is required that changes or moves made by one user, are transmitted to other users fast enough that correct sequencing is maintained, and preferentially the moves of one player appear instantaneously on the monitors of all other players. Achieving real-time updating of high-resolution 3D graphical displays to a plurality of users is a challenging aim.
Apart from games and the like, virtual reality has also been applied to a variety of areas of human endeavor to simulate reality where, due to economic, safety and other considerations, in has been deemed preferable to use simulations rather than the real thing. Examples of this include anatomical simulations of the human body for pedagogic purposes in the training of doctors and surgeons, design of objects for manufacture, on-line guidance, such as computer printer setups and maintenance, flight simulators for training aircraft pilots, and battlefield simulation for training the military, particularly tank drivers and artillery personnel.
A widely used approach to generating apparently 3D scenes for viewing on a 2D VDU is to plot the scene using a 3D co-ordinate system. Possible co-ordinate systems include for example, Cartesian and polar coordinate systems as well as spherical, cylindrical, tetragonal and hexagonal systems. A Cartesian coordinate system is shown, purely by way of example, in FIG. 2. The x-axis and y-axis are orthogonal, and represent the plane of the screen. The z-axis, representing depth, is drawn at an angle to indicate the out-of-plane dimension. In addition to Cartesian co-ordinates, other co-ordinate systems such as polar may be considered.
Placing objects within a scene drawn on such Cartesian axes, has, in the prior art, been accomplished by defining a centroid for each object, and plotting the centroid of each object onto the same coordinate system. When objects are moved, the scene is usually redrawn.
Positioning objects via their centroids within a 3D coordinate system, and then projecting the position onto a 2D screen has several drawbacks however. There is often a problem of positioning due to an ambiguity as to the true position of objects; that is at what depth into the scene objects are situated. There is also an ambiguity as to relative depth of different objects. The cursor moves in the plane of the two-dimensional screen of the VDU, but is used to manipulate objects in a three-dimensional space. In consequence, positioning objects correctly is not easy. In the real world, the viewer, having stereoscopic vision, is, at short distances, sensitive to depth. In virtual reality however, without stereoscopic display capability, perspective is merely an illusion, and it is difficult to tell which of two objects, placed in the foreground of a scene, is to be considered closer and which is to be considered further away from the viewer.
A further problem, which arises from the fact that the observer has only one viewpoint, is illustrated in FIGS. 3 and 4, representing different perspective viewpoints of a stack of blocks. FIG. 3 shows what appears to be a well-stacked tower of blocks as viewed from the front, whereas FIG. 4 shows the same scene from an alternative viewpoint, a few degrees in a clockwise direction, revealing that the bricks are not correctly stacked, as the user intended, but are rather staggered.
There are thus difficulties in navigating and positioning 3D objects in a virtual 3D scene, when viewing said scene on a 2D monitor. The impression of the relative position of virtual 3D objects in a 3D scene is a function of viewpoint.
A further example of the type of difficulties encountered is illustrated in FIGS. 5 and 6, which show a table lamp and a table. In FIG. 5, the lamp appears to rest on the table, the said lamp appearing to be centrally positioned and resting on the tabletop. In FIG. 6 however, showing the same view from a vantage point at tabletop height, the lamp is revealed to be ‘floating’ above the tabletop, separated from the tabletop by a gap.
A useful Software platform for virtual reality applications is GInIt. This has been disclosed; See Shmueli and Elber, [Shmueli O. and Elber G., Managing Data and Interactions in Three Dimensional Environments. Software for Communication Technologies—3rd Austrian-Technion Symposium, Lintz, Austria, April 1999], which is incorporated herein by reference.
A solid modeler in general supports both form and function of objects, thus virtual doors can open and bells can chime, and punching numbers onto a virtual telephone, enables real dialing to be accomplished.